#include "mt.h"

int main(int argc,char* argv[])
{
    int s, len;
    struct sockaddr_in remote;
    char str[MAX_MSG_LENGTH];
 	struct hostent *server;
 	
	//~ printf ("%s \n", argv[1]);
	/* Crear un socket de tipo UNIX con TCP (SOCK_STREAM). */
	//~ printf ("%s \n", "Se crea el socket");
    if ((s = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
        perror("creando socket");
        exit(1);
    }
	//~ printf ("%s \n", "Se arma la estruc");
	/* Establecer la dirección a la cual conectarse. */
    remote.sin_family = AF_INET;
    unsigned short  portfinal = htons(PORT);
    remote.sin_port = portfinal;
	//~ printf ("portfinal: %d \n", portfinal);
    struct in_addr ipfinal;
	//~ printf ("%s \n", "Se obtien la ip");
    if (inet_aton (argv[1], &ipfinal) == 0) {
        perror("convirtiendo IP");
        exit(1);
    }
    //~ printf ("%s \n", "Ip final");
    remote.sin_addr = ipfinal;
     //~ printf ("ipfinal: %d \n", ipfinal.s_addr);
    len = sizeof(remote);
     //~ printf ("len: %d \n", len);

   	/* Conectarse. */
    if (connect(s, (struct sockaddr *)&remote, len) == -1) {
        perror("conectandose");
        exit(1);
    }

	/* Establecer la dirección a la cual conectarse para escuchar. */
    while(printf("> "), fgets(str, MAX_MSG_LENGTH, stdin), !feof(stdin)) {
        if(sendto(s, str , strlen(str) + 1 , 0, (struct sockaddr *)&remote, len) == -1){

            perror("enviando");
            exit(1);
        }

//esperar stdout
	   int r;
	   if((r=recv(s, str, MAX_MSG_LENGTH, 0)) <0){
			perror("leyendo stdout");
			exit(1);
		}
		
		str[r] = '\0';
		printf("stdout: (%d) %s\n", r, str);

//esperar fin
       if(recv(s, str, strlen(str), 0) <0){
        perror("complete");
		exit(1);        
        }
    }

		printf("%s", str);


	/* Cerrar el socket. */
    close(s);

    return 0;
}



